This section introduces aspects that may be helpful in facilitating a better understanding of the claimed subject matter. Accordingly, the statements of this section are to be read in this light and are not to be understood as admissions about what is in the prior art or what is not in the prior art.
In some known communication schemes, users communicate with each other using social networks. Social networking services can be defined as an online service, platform, or site that provides services to subscribers based upon a representation of social relations among people who may share a common background, interest, or activity. A social network typically consists of a representation of each user (often a profile), his/her social links, and a variety of additional elements such as photographs, status reports, web links, or the like. Most social network services are web-based and provide tools/services that allow users to interact over the Internet, such as e-mail and instant messaging. Social networking sites allow users to share ideas, activities, events, and interests within their individual networks. Exemplary social networks include Facebook, Google+, Twitter, LinkedIn, VKonkatke, Orkut, and RenRen.
Social networks represent individuals and their relations using a social graph. Generally, a social graph describes the relationships between a subscriber's online persona (which may also be referred to as the user's avatar) and other subscribers' online personas. The social graph therefore reflects the real-world relationships between the subscribers, which are generally referred to as the social network. For example, the social graph of a social network can be structured as a series of nodes (e.g., “Subscriber,” “FriendsLists,” “CloseFriends,” etc.) that are associated with each other using edges (which may also be referred to as links or connections) defined by the relationships between the nodes. Leaf nodes are associated with a parent node but they have no child nodes. For example, leaf nodes associated with the “CloseFriends” node may each include a data structure including information for one of the subscriber's friends. The social graph may also include nodes for different types of relationships such as groups associated with a particular interest, as well as nodes for different types of information such as photographs, music, and web links. The nodes, edges, information, and relationships that make up the social graph may be referred to as resources of the social graph.
Resources in the social graph may be associated with users or subscribers that are not explicitly connected in the social graph by an edge representing a relationship. For example, a subscriber may post a group photograph of all of the alumni at a reunion picnic. The group photograph may include images of people who are listed in the FriendsLists or CloseFriends groups of the subscriber and other people who are not linked to the subscriber in the social graph. The subscriber or friends of the subscriber may identify or “tag” people in the group photograph who are not linked to the subscriber. For another example, a subscriber may define groups, such as a “Business_Lunch_Group”, that includes other subscribers that are all linked to the subscriber who defined the group but who may not be linked to each other in the social graph. The subscribers who are linked together may not be able to exchange information through the social network such as planning messages for scheduling a business lunch.
Providers of social networks use the information in their social graph to implement services or applications (apps). Developers can create services or apps using an application programming interface (API) developed and supported by the social network provider. The API for a social network usually implements a Representational State Transfer (REST) architecture that consists of clients and servers. Clients initiate requests to servers, which process requests and return appropriate responses to the clients. Requests and responses are built around the transfer of representations of resources. A resource can be virtually any coherent and meaningful concept that may be addressed. A representation of a resource is typically a document that captures the current or intended state of a resource. Generally, a REST-ful architecture must be client-server based, stateless, cacheable, layered, use a uniform interface, and may provide code on demand. For example, an API for a social network such as Facebook includes a defined set of Hypertext Transfer Protocol (HTTP) request messages along with a definition of the structure of response messages, e.g., in an Extensible Markup Language (XML) or JavaScript Object Notation (JSON) format.